package 多线程; // 定义包名

public class useFlagInterrupt extends Thread{ // 定义类，继承自Thread类
    
    volatile boolean flag = false; // 定义一个volatile布尔变量作为标志

    @Override
    public void run(){ // 重写run方法，定义线程的执行逻辑
        while(!flag){ // 当flag为false时，循环执行
            System.out.println(Thread.currentThread().getName() + "...run..."); // 输出线程运行信息
            try {
                System.out.println(Thread.currentThread().getName() + "...sleep 3 sec..."); // 输出线程休眠信息
                Thread.sleep(3000L); // 线程休眠3秒
            } catch (InterruptedException e) { // 捕获中断异常
                e.printStackTrace(); // 打印异常堆栈
            }
        }
    }

    public static void main(String[] args) throws InterruptedException{ // 主方法，程序的入口
        useFlagInterrupt t1 = new useFlagInterrupt(); // 创建线程对象
        t1.start(); // 启动线程

        System.out.println(Thread.currentThread().getName() + "...sleep 6 sec..."); // 输出主线程休眠信息
        Thread.sleep(6000L); // 主线程休眠6秒
        // t1.stop(); // 使用stop强行退出线程，已废弃，不推荐使用
        t1.flag = true; // 设置标志为true，结束线程循环
    }
}
